This invention relates to a system and apparatus to deencrypt firmware which is stored in a memory. Encryption of the firmware stored in memory prevents third parties from determining the program stored in the memory by reading out the information in the memory and decompiling this information to determine the program stored therein.
A prior art deciphering system for use with a microcomputer is described in Nakamura, U.S. Pat. No. 4,905,277 entitled "Method For Enciphering and Deciphering Instructions in a Microcomputer, and a Microcomputer Used For Effecting Same". This system uses two different types of instruction codes which can be decoded by two different types of instruction decoders following two different types of decoding formats. One type of decoding format is used for odd addresses in the memory and another type of decoding format is used for even addresses in the memory. Although this system makes it more difficult to decompile the software stored in the memory, it may be possible for someone who knows the two different instruction codes to determine the software stored in the memory. In addition, this system requires changes to the core microcomputer or microprocessor in that two different instruction decoders are required. The use of two different instruction decoders may make the system harder to test.
It is desired to have an improved method and apparatus for deencrypting encrypted instructions stored in a memory. It is also desired to have an improved method that does not require substantial changes to a core microprocessor or microcomputer and that does not interfere with the testing of the microprocessor or microcomputer.